package algorithm.niuke;

/**
 * 跳台阶问题
 *
 * @author jack.wu
 * @version 1.0
 * @date 2020-05-09
 */
public class JumpStairs {

    public static void main(String[] args) {

        int target = 6;
        int n = jumpFloor(target);
        System.out.println(n);
    }

    /**
     * 一只青蛙一次可以跳上1级台阶，也可以跳上2级。求该青蛙跳上一个n级的台阶总共有多少种跳法
     *
     * @param target 台阶数
     * @return 跳法
     */
    private static int jumpFloor(int target){
        if (target<=0){
            return 0;
        }
        if (target == 1){
            return 1;
        }
        if (target == 2){
            return 2;
        }
        return jumpFloor(target - 1) + jumpFloor(target - 2);

    }

    /**
     * 一只青蛙一次可以跳上1级台阶，也可以跳上2级……它也可以跳上n级。求该青蛙跳上一个n级的台阶总共有多少种跳法。
     *
     * @param target 台阶数
     * @return 跳法
     */
    private static int jumpFloorI(int target) {
        if (target <= 0) {
            return 0;
        }
       return 1 << (target -1);
    }


}
